Спринт 2/18 → Тема 4/6: Настройка окружения: Git, pytest → Урок 5/7
Commit/Push. Сохранение изменений и отправка изменений на сервер
Фиксирование изменений
Чтобы зафиксировать изменения в файле, сначала нужно эти изменения внести и отправить их в индекс. В прошлом уроке вы именно это и сделали, исправив ошибку в проекте backend_test_homework и выполнив команду
git add .. Значит теперь вы можете зафиксировать эти изменения, то есть сделать первый коммит.Каждый коммит сохраняет актуальное состояние файлов, и вы можете сравнивать разные состояния от коммита к коммиту. Пока что коммиты будут сохранены локально, на вашем компьютере, и доступны только вам.
Отправим коммит и сопроводим его комментарием. Для этого есть команда
git commit. Ключ -m (от англ. message, «послание») даёт возможность добавить к коммиту комментарий, который пишется в кавычках после ключа:BASH
В комментариях описывайте, какие изменения были сделаны в коммите, иначе через неделю вы уже не вспомните, что и зачем было написано. Git понимает кириллицу, но комментировать по-английски — хороший тон.
❗ Мы подготовили для вас краткое руководство по написанию коммитов. Сохраните его и пользуйтесь на здоровье.
Как только вы нажмёте кнопку Enter, коммит сохранится, и в терминале появится отчёт:
BASH
В первой строке вы видите свой комментарий (Add first commit), а перед ним, в квадратных скобках, информацию о коммите:
- main (master) — название ветки, в которой сделан коммит. Ветки, или, как их ещё называют, «бранчи» — один из инструментов Git. Их используют, например, когда нужно добавить и протестировать работу нового функционала, но при этом не повлиять на работу программы в целом.
- root-commit (англ. «корневой коммит») — означает, что этот коммит самый первый. Продолжая работу в том же репозитории, вы больше не увидите этого сообщения.
- контрольная сумма или «хеш» — уникальный идентификатор, присвоенный коммиту. Для удобства коммиты идентифицируются по первым семи символам контрольной суммы. В нашем примере это
ab98382.
Второй строкой идёт информация о файлах коммита:
- изменён один файл (1 files changed);
- в изменённых файлах добавлена одна строка и ни одна не удалена (1 insertions(+), 0 deletions(-) ).
Изменение сделанного коммита
Если вдруг вы забыли добавить новый файл в репозиторий и сделали это уже после коммита, можно не делать новый коммит. Достаточно добавить изменения к последнему коммиту. Для этого есть ключ
--amend (англ. amend, «исправить»): BASH
Эта команда добавит изменённые файлы в последний сделанный коммит, а с дополнительным флагом
-m ещё и обновит комментарий:BASH
Игнорирование файлов
Некоторых файлов и директорий не должно быть даже в списке неотслеживаемых, например файлов с вашими паролями или настройками конкретного компьютера. Если репозиторий публичный, то злоумышленники могут воспользоваться вашими секретными данными и взломать ваши личные аккаунты или рабочие проекты. Чтобы эти файлы не попали в удалённый репозиторий, используйте текстовый файл .gitignore. В macOS и Linux файлы, название которых начинается с точки, — скрытые.
Достаточно указать в файле .gitignore название директории или имя файла, и Git перестанет их «видеть». Если игнорируемый файл находится не в корне проекта, нужно указать путь до него.
В файле .gitignore можно оставлять комментарии; строка комментария начинается с символа решётки
#:В директории проекта backend_test_homework/ создайте файл text.doc и текстовый файл .gitignore. В файл .gitignore добавьте строчку с текстом
*.doc.А теперь зайдите в Bash, перейдите в директорию backend_test_homework/ и выполните два действия:
- добавьте изменения в индекс (в каталоге появилось два новых файла) —
git add .; - сделайте коммит с комментарием Add new files.
Пора на сервер
Все сделанные коммиты сохранены локально, на вашем компьютере. Чтобы ваша работа стала доступна коллегам (а в Практикуме — код-ревьюерам и наставникам), нужно отправить изменения на сервер.
Для отправки локальных изменений на сервер GitHub, выполните команду из любой директории проекта:
BASH
Git запомнил, откуда вы клонировали репозиторий, поэтому не нужно указывать, куда именно отправлять изменения. На сленге эту операцию называют «запушить» (от англ. push, «протолкнуть»).
Готово! Теперь ваши изменения смогут увидеть все, кто имеет доступ к репозиторию.
Что делать, если в удалённый репозиторий попали лишние файлы или папки
Избавиться от лишнего поможет команда
git rm. Создайте в директории backend_test_homework/ файл new.py и отправьте его в удалённый репозиторий:BASH
Зайдите в удалённый репозиторий.
new.py — лишний файл в удалённом репозитории. Чтобы не отслеживать его, выполните команды:
BASH
Теперь файл удалён из репозитория на GitHub (можно даже проверить) и локально изменения в нём больше не отслеживаются.
Соотнесите команды и действия, которые они выполняют.
Отправляет изменения в удалённый репозиторий (от англ. push, «протолкнуть»).
git push
Коммитит изменения с комментарием (от англ. message, «послание»).
git commit -m "Message"
Удаляет файл из репозитория и отслеживания.
git rm --cached имя_файла
Добавляет изменения к последнему сделанному коммиту (англ. amend, «исправить»).
git commit --amend -m "Message"
Вы поработали с основными командами Git, изменили файлы внутри репозитория, а также структуру самого репозитория (добавили в него новые файлы). Информация об этих изменениях не пропадает бесследно, и к ней всегда можно обратиться, а как это сделать, вы узнаете уже в следующем уроке.